MySQL

您所在的位置:网站首页 provided that的that可以省略么 MySQL

MySQL

#MySQL| 来源: 网络整理| 查看: 265

SQL通用语法

   1). SQL语句可以单行或多行书写,以分号结尾。

   2). SQL语句可以使用空格/缩进来增强语句的可读性。

   3). MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

   4). 注释:

       单行注释:-- 注释内容 或 # 注释内容

       多行注释:/* 注释内容 */

SQL分类

DDL

DDL  数据定义语言,用来定义数据库对象(数据库,表,字段)

DDL-数据库操作

 1)查询所有数据库      show datebases;

 2)查询当前数据库      select databases;

 3)创建数据库

       create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序 规则 ];    

      eg:1.创建一个itcast数据库, 使用数据库默认的字符集。

            create database itcast;

            在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。

            可以通过if not exists 参数来解决这个问题,数据库不存在, 则创建该数据库,如果存在,则不

            创建。

            create database if not extists itcast;

       eg:  2.创建一个itheima数据库,并且指定字符集

               create database itheima default charset utf8mb4;  

 4)删除数据库

      drop database [ if exists ] 数据库名 ;

      如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再

执行删除,否则不执行删除。

5)切换数据库

     use 数据库名 ;

     我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的

     比如,切换到itcast数据,执行如下SQL:

               use itcast;

表操作

2.1 表操作-查询创建

查询当前数据库所有表  show tables;

查看指定表结构           desc 表名;

查询指定表的建表语句  show create table 表名;

创建表结构

                         注意: [...] 内为可选参数,最后一个字段后面没有逗号

2.2 表操作-数据类型

  主要有:数值类型,字符串类型,日期时间类型。

数值类型

字符串类型

            char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

日期时间类型

2.3 表操作-eg

    设计一张员工信息表,要求如下:

    1. 编号(纯数字)

    2. 员工工号 (字符串类型,长度不超过10位)

    3. 员工姓名(字符串类型,长度不超过10位)

    4. 性别(男/女,存储一个汉字)

    5. 年龄(正常人年龄,不可能存储负数)

    6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)

    7. 入职时间(取值年月日即可)

对应的建表语句如下:

2.4 表操作-修改

添加字段   

    ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

修改数据类型

    ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);

修改字段名和字段类型

    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

删除字段

    ALTER TABLE 表名 DROP 字段名;

修改表名

    ALTER TABLE 表名 RENAME TO 新表名;

2.5 表操作-删除

删除表

DROP TABLE [ IF EXISTS ] 表名;

(可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不

加该参数项,删除一张不存在的表,执行将会报错)。)

删除指定表, 并重新创建表

TRUNCATE TABLE 表名;    注意: 在删除表的时候,表中的全部数据也都会被删除。

DML

DML(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。

添加数据(INSERT)

修改数据(UPDATE)

删除数据(DELETE)

3.1 添加数据

1)给指定字段添加数据

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);

2)给全部字段添加数据

INSERT INTO 表名 VALUES (值1, 值2, ...);

3)批量添加数据

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值 1, 值2, ...) ;

INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;

注意:

插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

字符串和日期型数据应该包含在引号中。

插入的数据大小,应该在字段的规定范围内。

3.2修改数据

UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;

修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

3.3删除数据

DELETE FROM 表名 [ WHERE 条件 ] ;

注意事项:

DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。

当进行删除全部数据操作时,datagrip会提示我们,询问是否确认删除,我们直接点击Execute即可。

DQL   

DQL(数据查询语言),用来查询数据库中表的记录。

基本语法:

分为以下几个部分:

基本查询(不带任何条件)

条件查询(WHERE)

聚合函数(count、max、min、avg、sum)

分组查询(group by)

排序查询(order by)

分页查询(limit)

基本查询(不带任何条件)

1.1 查询多个字段

SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;

SELECT * FROM 表名 ;

注意:*代表查询所有字段,开发尽量少用。

1.2 字段设置别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;

SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

1.3 去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

条件查询(where)

SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

聚合函数(count,max,min,avg,sum)

将一列数据作为一个整体,进行纵向计算 。

SELECT 聚合函数(字段列表) FROM 表名 ;

                           注意 : NULL值是不参与所有聚合函数运算的。

分组查询(group by)

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组 后过滤条件 ];

where与having区别:

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组

之后对结果进行过滤。

判断条件不同:where不能对聚合函数进行判断,而having可以。

注意事项:

分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

执行顺序: where > 聚合函数 > having 。

支持多字段分组, 具体语法为 : group by columnA,columnB

排序查询(order by)

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;

排序方式:ASC(升序默认)  DESC(降序)

注意事项:

如果是升序, 可以不指定排序方式ASC ;

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;

分页查询(limit)

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

注意事项:

起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。

分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。

如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

执行顺序

DCL

DCL(数据控制语言),用来管理数据库用户、控制数据库的访问权限。

1.管理用户

1.1 查询用户

select * from mysql.user;

其中 Host代表当前用户访问的主机, 如果为localhost, 仅代表只能够在当前本机访问,是不可以

远程访问的。 User代表的是访问该数据库的用户名。在MySQL中需要通过Host和User来唯一标识一

个用户。

1.2 查询用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

1.3修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;

1.4 删除用户

DROP USER '用户名'@'主机名' ;

注意事项:

在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。

主机名可以使用 % 通配

这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用

2.权限控制

     官方文档:https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html

2.1 查询权限

SHOW GRANTS FOR '用户名'@'主机名' ;

2.2授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

2.3 撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名'; 

注意事项:

多个权限之间,使用逗号分隔。

授权时, 数据库名和表名可以使用 * 进行通配,代表所有。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3